#pragma once
#include <QObject>

#include "RsgisPortal.h"

#include "RsGisLibMorCreateCirOp.h"
#include "RsGisLibMorImageDilate.h"
#include "RsGisLibMorImageErode.h"
#include "RsGisLibMorImageGradiant.h"
#include "RsGisLibMorImageDilateComOut.h"
#include "RsGisLibMorImageErodeComOut.h"
#include "RsGisLibMorImageGradiantComOut.h"
#include "RsGisLibMorImageLocalMinima.h"
#include "RsGisLibMorImageLocalMinimaComOut.h"
#include "RsGisLibMorImageOpening.h"
#include "RsGisLibMorImageClosing.h"
#include "RsGisLibMorImageBlackTopHat.h"
#include "RsGisLibMorImageWhiteTopHat.h"

class RsGisLibCMDMorphology : public QObject
{
	Q_OBJECT
public:
	RsGisLibCMDMorphology(RsgisPortal* Port);
	~RsGisLibCMDMorphology();
	RsgisPortal* ClientPort;

public:
	RsGisLibMorCreateCirOp* rsgisMorCreateCirOp;
	RsGisLibMorImageDilate* rsgisMorImageDilate;
	RsGisLibMorImageErode* rsgisMorImageErode;
	RsGisLibMorImageGradiant* rsgisMorImageGradiant;
	RsGisLibMorImageDilateComOut* rsgisMorImageDilateComOut;
	RsGisLibMorImageErodeComOut* rsgisMorImageErodeComOut;
	RsGisLibMorImageGradiantComOut* rsgisMorImageGradiantComOut;
	RsGisLibMorImageLocalMinima* rsgisMorImageLocalMinima;
	RsGisLibMorImageLocalMinimaComOut* rsgisMorImageLocalMinimaComOut;
	RsGisLibMorImageOpening* rsgisMorImageOpening;
	RsGisLibMorImageClosing* rsgisMorImageClosing;
	RsGisLibMorImageBlackTopHat* rsgisMorImageBlackTopHat;
	RsGisLibMorImageWhiteTopHat* rsgisMorImageWhiteTopHat;

public slots:
	void MorCreateCirOp();
	void MorImageDilate();
	void MorImageErode();
	void MorImageGradiant();
	void MorImageDilateComOut();
	void MorImageErodeComOut();
	void MorImageGradiantComOut();
	void MorImageLocalMinima();
	void MorImageLocalMinimaComOut();
	void MorImageOpening();
	void MorImageClosing();
	void MorImageBlackTopHat();
	void MorImageWhiteTopHat();
};
